<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Empresa_model extends MY_Model {

    function __construct() {
        parent::__construct();
        $this->_table = 'empresa';
        $this->primary_key = 'emp_id';
    }

    public function getEmpresa($datos = null) {
        if (isset($datos['emp_id'])) {
            $this->db->where('emp_id', $datos['emp_id']);
        }
        if (isset($datos['propios'])) {
            $this->db->where('emp_fk_usuario', $this->session->userdata('usu_id'));
        } else {
            if ($this->session->userdata('usu_fk_rol') > 2) {
                $this->db->where('emp_usucre', $this->session->userdata('usu_id'));
                $this->db->where('emp_fk_usuario !=', $this->session->userdata('usu_id'));
            }
        }
        if ($this->session->userdata('usu_fk_rol') > 2 && $datos['creados']) {
            $this->db->where('emp_fk_usuario', $this->session->userdata('usu_id'));
        }
        $this->db->join('municipio', 'municipio.mun_id = empresa.emp_fk_municipio', 'left');
        if (isset($datos['paginas']) && isset($datos['index'])) {
            $this->db->limit($datos['paginas'], ($datos['index'] * $datos['paginas']));
        }
        $query = $this->db->get('empresa');
        $array = array();
        $cont = 0;
        foreach ($query->result_array() as $row) {
            $array[$cont] = $row;
            $array[$cont]['d_categorias'] = $this->_get_categorias($row['emp_id']);
            $array[$cont]['d_imagenes'] = $this->_get_imagenes($row['emp_id']);
            $cont++;
        }
        return $array;
    }
    
    public function borrar_imagen($idempresa, $idimagen){
        $this->db->delete('empresa_imagen', array('emi_fk_empresa' => $idempresa, 'emi_id' => $idimagen));
    }

    public function getEmpresasUsuario($datos = null) {
        $this->db->where('emp_fk_usuario', $datos['usu_id']);
        return $this->db->get('empresa')->result_array();
    }

    public function setEmpresa($datos_empresa = null, $datos_categoria = null, $datos_imagenes = null, $idempresa = null) {
        if($idempresa == null){
            $this->db->insert('empresa', $datos_empresa); 
        }else{
            if($datos_empresa != null){
                //actualizamos empresa
                $this->db->where('emp_id', $idempresa);
                $this->db->update('empresa', $datos_empresa);
                //si no se ha visto afectada ninguna row es que han intentado hacer trampas
                if($this->db->affected_rows() == 0){
                    return null;
                }
            }
            
            if($datos_categoria != null){
                //actualizamos categorias de empresa.
                $this->db->delete('emp_cat_empresa', array('ece_fk_empresa' => $idempresa));
                $this->db->insert_batch('emp_cat_empresa', $datos_categoria);
            }
            
            if($datos_imagenes != null){
                //actualizamos imagenes de empresa.
                $this->db->insert('empresa_imagen', $datos_imagenes);
            }
        }
        return $idempresa != null ? $idempresa : $this->db->insert_id();
    }
    
    public function borrar_empresa($idempresa){
        $this->db->delete('empresa', array('emp_id' => $idempresa, 'emp_fk_usuario' => $this->session->userdata('usu_id')));
        $this->db->delete('empresa_imagen', array('emi_fk_empresa' => $idempresa));
        $this->db->delete('emp_cat_empresa', array('ece_fk_empresa' => $idempresa));
        return $this->db->_error_message();
    }
    
    public function is_empresa_propia($idempresa = null){
        if($idempresa == null){
            return true;
        }
        $this->db->where('emp_id', $idempresa);
        $this->db->where('emp_fk_usuario', $this->session->userdata('usu_id'));
        $query = $this->db->get('empresa');
        return $query->num_rows() > 0 ? true : false;
    }
    
    public function get_empresas_similares($datos){
        $arrayempresas = array();
        
        $query = $this->db->get('empresa');
        
        foreach($query->result_array() as $empresa){
            $lev = levenshtein(slug($datos['emp_nombre']), $empresa['emp_slug']);
            if ($lev == 0) {
                // salir del bucle, se ha encontrado una coincidencia exacta
                $arrayempresas[] = $empresa;
                break;
            }
            if ($lev < 4) {
                $arrayempresas[] = $empresa;
            }
        }
        return $arrayempresas;
    }

    public function getCategorias($idparent = null) {
        if ($idparent != null) {
            $this->db->where('emc_parent', $idparent);
        }
        return $this->db->get('emp_categoria')->result_array();
    }

    //*****private methods

    private function _get_categorias($idempresa) {
        $this->db->where('ece_fk_empresa', $idempresa);
        $this->db->join('emp_categoria', 'emp_categoria.emc_id = emp_cat_empresa.ece_fk_emp_categoria');
        return $this->db->get('emp_cat_empresa')->result_array();
    }
    
    private function _get_imagenes($idempresa){
        $this->db->where('emi_fk_empresa', $idempresa);
        return $this->db->get('empresa_imagen')->result_array();
    }

}

/* End of file MY_Model.php */
/* Location: ./core/MY_Model.php */